package com.hsoft.zhxy.app.demo_03_01.controller;

import com.alibaba.fastjson.JSONObject;
import com.hsoft.zhxy.app.demo_03_01.model.entity.DemoEntity;
import com.hsoft.zhxy.app.demo_03_01.model.query.DemoQuery;
import com.hsoft.zhxy.app.demo_03_01.service.DemoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

@Api(tags = "demo_03_01 GET请求(基础查删)")
@Log4j2
@Validated
@RestController
@RequestMapping(value = "/demo_03_01/demoGet/", produces = "application/json;charset=UTF-8")
public class Demo001GetController {

    @Autowired
    DemoService demoService;

    /**
     * 查询单条数据 （注：本例只适用于一张数据表的查询操作，参数的校验根据DemoEntity中的配置自动完成，本例代码会自动生成，不需要编写。）
     * @param demoEntity
     * @return JSONObject
     */
    @ApiOperation(value = "查询单条数据）", notes = "查询单条数据")
    @GetMapping("findOne")
    public JSONObject findOne(DemoEntity demoEntity) {
        return demoService.findOne(demoEntity);
    }

    /**
     * 查询列表数据 （注：本例只适用于一张数据表的查询操作，参数的校验根据DemoEntity中的配置自动完成，本例代码会自动生成，不需要编写。）
     * @param demoEntity
     * @return JSONObject
     */
    @ApiOperation(value = "查询列表数据", notes = "查询列表数据")
    @GetMapping("findList")
    public JSONObject findList(DemoEntity demoEntity) {
        return demoService.findList(demoEntity);
    }

    /**
     * 查询分页列表数据 （注：本例只适用于一张数据表的查询操作，参数的校验根据DemoEntity中的配置自动完成，本例代码会自动生成，不需要编写。）
     * @param demoEntity
     * @param page
     * @param pageSize
     * @return JSONObject
     */
    @ApiOperation(value = "查询分页列表数据", notes = "查询分页列表数据")
    @GetMapping("findListByPage")
    public JSONObject findListByPage(@Valid DemoEntity demoEntity, @Valid @NotNull(message = "页码为空") long page,
                                            @Valid @NotNull(message = "查询行数为空") long pageSize) {
        return demoService.findListByPage(demoEntity, page, pageSize);
    }

    /**
     * 查询用户基础信息数据(分页) (注：本例适用于多表组合查询，参数的校验根据DemoQuery中的配置自动完成，本例代码不会自动生成。)
     * @param demoQuery
     * @return JSONObject
     */
    @ApiOperation(value = "查询用户基础信息数据(分页)", notes = "查询用户基础信息数据(分页)")
    @GetMapping("findListYhjcxxByPage")
    public JSONObject findListYhjcxxByPage(DemoQuery demoQuery) {
        return demoService.findListYhjcxxByPage(demoQuery);
    }

    /**
     * 删除 （注：本例只适用于一张数据表的查询操作，参数的校验根据DemoEntity中的配置自动完成，本例代码会自动生成，不需要编写。）
     * @param demoEntity
     * @return JSONObject
     */
    @ApiOperation(value = "删除", notes = "删除")
    @PostMapping("delete")
    public JSONObject delete(@RequestBody @Valid DemoEntity demoEntity) {
        return demoService.delete(demoEntity);
    }

}

